package com.ruoyi.project.order.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;

/**
 * 订单信息对象 bins_order
 * 
 * @author ruoyi
 * @date 2025-04-01
 */
public class BinsOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单编号 */
    @Excel(name = "订单编号")
    private String orderNo;

    /** 用户表的用户ID */
    @Excel(name = "用户表的用户ID")
    private String userId;

    /** 订单状态
     * 0: '开始骑行',
    * 1: '奇行中',
    * 2: '已完成',
    * 3: '已支付',
    * 4: '存在异常',
    * 9: '已取消'
     * */
    @Excel(name = "订单状态")
    private Integer orderStatus;
    /** 订单状态
     * 0: '开始骑行',
    * 1: '奇行中',
    * 2: '已完成',
    * 3: '已支付',
    * 4: '存在异常',
    * 9: '已取消'
     * */
    @Excel(name = "订单状态")
    private List<Integer> orderStatusList;

    /** 用户手机号 */
    @Excel(name = "用户手机号")
    private String mobile;

    /** 出发时间 */
    @Excel(name = "出发时间")
    private String startTime;
    /** 出发地具体地址 */
    @Excel(name = "出发地具体地址")
    private String startingPoint;

    /** 结束时间 */
    @Excel(name = "结束时间")
    private String endTime;

    /** 目的地具体地址 */
    @Excel(name = "目的地具体地址")
    private String destination;
    /** 订单分钟数 */
    @Excel(name = "订单分钟数")
    private Integer orderMins;

    /** 用户订单留言 */
    @Excel(name = "用户订单留言")
    private String message;

    /** 商品总费用 */
    @Excel(name = "商品总费用")
    private BigDecimal goodsPrice;

    /** 服务费用 */
    @Excel(name = "服务费用")
    private BigDecimal servicePrice;

    /** 优惠券减免 */
    @Excel(name = "优惠券减免")
    private BigDecimal couponPrice;

    /** 用户积分减免 */
    @Excel(name = "用户积分减免")
    private BigDecimal integralPrice;

    /** 团购优惠价减免 */
    @Excel(name = "团购优惠价减免")
    private BigDecimal grouponPrice;

    /** 订单费用， = goods_price + freight_price - coupon_price */
    @Excel(name = "订单费用， = goods_price + freight_price - coupon_price")
    private BigDecimal orderPrice;

    /** 实付费用， = order_price - integral_price */
    @Excel(name = "实付费用， = order_price - integral_price")
    private BigDecimal actualPrice;

    /** 微信付款编号 */
    @Excel(name = "微信付款编号")
    private String payId;

    /** 微信付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "微信付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 使用车辆 */
    @Excel(name = "使用车辆")
    private Long vehicleCode;

    /** 商户ID */
    @Excel(name = "商户ID")
    private Long deptId;

    /** 商户名称 */
    @Excel(name = "商户名称", width = 30, dateFormat = "yyyy-MM-dd")
    private String deptName;

    /** 结算状态 */
    @Excel(name = "结算状态")
    private Integer settlementStatus;

    public String getVehicleType() {
        return vehicleType;
    }

    public void setVehicleType(String vehicleType) {
        this.vehicleType = vehicleType;
    }

    /** 车辆类型 */
    @Excel(name = "车辆类型")
    private String vehicleType;
    /** 计费方式 ：0 分钟, 1 日 */
    @Excel(name = "计费方式")
    private Integer freightType;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    public void setOrderNo(String orderNo) 
    {
        this.orderNo = orderNo;
    }

    public String getOrderNo() 
    {
        return orderNo;
    }

    public void setUserId(String userId)
    {
        this.userId = userId;
    }

    public String getUserId()
    {
        return userId;
    }

    public void setOrderStatus(Integer orderStatus) 
    {
        this.orderStatus = orderStatus;
    }

    public Integer getOrderStatus() 
    {
        return orderStatus;
    }

    public List<Integer> getOrderStatusList() {
        return orderStatusList;
    }

    public void setOrderStatusList(List<Integer> orderStatusList) {
        this.orderStatusList = orderStatusList;
    }

    public void setMobile(String mobile)
    {
        this.mobile = mobile;
    }

    public String getMobile() 
    {
        return mobile;
    }

    public void setStartingPoint(String startingPoint) 
    {
        this.startingPoint = startingPoint;
    }

    public String getStartingPoint() 
    {
        return startingPoint;
    }

    public void setDestination(String destination) 
    {
        this.destination = destination;
    }

    public String getDestination() 
    {
        return destination;
    }

    public void setMessage(String message) 
    {
        this.message = message;
    }

    public String getMessage() 
    {
        return message;
    }

    public void setGoodsPrice(BigDecimal goodsPrice) 
    {
        this.goodsPrice = goodsPrice;
    }

    public BigDecimal getGoodsPrice() 
    {
        return goodsPrice;
    }

    public void setServicePrice(BigDecimal servicePrice) 
    {
        this.servicePrice = servicePrice;
    }

    public BigDecimal getServicePrice() 
    {
        return servicePrice;
    }

    public void setCouponPrice(BigDecimal couponPrice) 
    {
        this.couponPrice = couponPrice;
    }

    public BigDecimal getCouponPrice() 
    {
        return couponPrice;
    }

    public void setIntegralPrice(BigDecimal integralPrice) 
    {
        this.integralPrice = integralPrice;
    }

    public BigDecimal getIntegralPrice() 
    {
        return integralPrice;
    }

    public void setGrouponPrice(BigDecimal grouponPrice) 
    {
        this.grouponPrice = grouponPrice;
    }

    public BigDecimal getGrouponPrice() 
    {
        return grouponPrice;
    }

    public void setOrderPrice(BigDecimal orderPrice) 
    {
        this.orderPrice = orderPrice;
    }

    public BigDecimal getOrderPrice() 
    {
        return orderPrice;
    }

    public void setActualPrice(BigDecimal actualPrice) 
    {
        this.actualPrice = actualPrice;
    }

    public BigDecimal getActualPrice() 
    {
        return actualPrice;
    }

    public void setPayId(String payId) 
    {
        this.payId = payId;
    }

    public String getPayId() 
    {
        return payId;
    }

    public void setPayTime(Date payTime) 
    {
        this.payTime = payTime;
    }

    public Date getPayTime() 
    {
        return payTime;
    }

    public void setVehicleCode(Long vehicleCode)
    {
        this.vehicleCode = vehicleCode;
    }

    public Long getVehicleCode()
    {
        return vehicleCode;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }

    public String getDeptName()
    {
        return deptName;
    }

    public void setSettlementStatus(Integer settlementStatus) 
    {
        this.settlementStatus = settlementStatus;
    }

    public Integer getSettlementStatus() 
    {
        return settlementStatus;
    }

    public void setFreightType(Integer freightType) 
    {
        this.freightType = freightType;
    }

    public Integer getFreightType() 
    {
        return freightType;
    }

    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public Integer getOrderMins() {
        return orderMins;
    }

    public void setOrderMins(Integer orderMins) {
        this.orderMins = orderMins;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("orderNo", getOrderNo())
            .append("userId", getUserId())
            .append("orderStatus", getOrderStatus())
            .append("mobile", getMobile())
            .append("startingPoint", getStartingPoint())
            .append("destination", getDestination())
            .append("message", getMessage())
            .append("goodsPrice", getGoodsPrice())
            .append("servicePrice", getServicePrice())
            .append("couponPrice", getCouponPrice())
            .append("integralPrice", getIntegralPrice())
            .append("grouponPrice", getGrouponPrice())
            .append("orderPrice", getOrderPrice())
            .append("actualPrice", getActualPrice())
            .append("payId", getPayId())
            .append("payTime", getPayTime())
            .append("vehicleCode", getVehicleCode())
            .append("deptId", getDeptId())
            .append("deptName", getDeptName())
            .append("settlementStatus", getSettlementStatus())
            .append("freightType", getFreightType())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
